#!author: fenggbinn
#@date:   2022-10-20
#@title:  getAllSellingPrice

import time
# from bs4 import BeautifulSoup  # 之前的方法没有用到此方法，改进的代码需要使用此模块方法
# import pandas as pd
import sys
import os
import datetime
from selenium import webdriver


# 使用selenium进行解析网页（可以滚动加载所有的数据）
# from selenium.webdriver.chrome.service import Service
from selenium.webdriver.edge.service import Service


def open_url_selenium(url):
    # option = webdriver.ChromeOptions()
    option = webdriver.EdgeOptions()
    option.add_argument('lang=zh_CN.UTF-8')# 设置
    # 解决报错，设置无界面运行
    option.add_argument('--no-sandbox')
    option.add_argument('--disable-dev-shm-usage')
    option.add_argument('window-size=1920x3000')  # 指定浏览器分辨率
    option.add_argument('--disable-gpu')  # 谷歌文档提到需要加上这个属性来规避bug
    option.add_argument('blink-settings=imagesEnabled=false')  # 不加载图片, 提升速度
    option.add_argument('--headless')  # 浏览器不提供可视化页面. linux下如果系统不支持可视化不加这条会启动失败
    # 下面语句是为了解决后面的无关显示：DevTools listening on ws://127.0.0.1:53
    option.add_experimental_option('excludeSwitches', ['enable-logging'])

    # option.set_capability("pageLoadstrategy", "none")
    '''# 获取chromedriver.exe路径
    if getattr(sys, 'frozen', False):
        # 从exe包里找chromedriver依赖驱动的情况
        chromedriver_path = os.path.join(sys._MEIPASS, "chromedriver.exe")
    else:
        # 本地（未打包成exe时调用依赖）
        chromedriver_path = "chromedriver.exe"
    browser = webdriver.Chrome(service=Service(chromedriver_path), options=option, desired_capabilities={"page_load_strategy": "none"})'''
    try:
        # 获取chromedriver.exe路径
        if getattr(sys, 'frozen', False):
            # 从exe包里找chromedriver依赖驱动的情况
            edgedriver_path = os.path.join(sys._MEIPASS, "msedgedriver.exe")
        else:
            # 本地（未打包成exe时调用依赖）
            edgedriver_path = "msedgedriver.exe"
        browser = webdriver.Edge(service=Service(edgedriver_path), options=option)
        # x = 4/0
    except Exception as e:
        # 如果不存在edge浏览器，就使用谷歌浏览器（谷歌浏览器不存在，就让用户安装edge或者谷歌浏览器）
        # 获取chromedriver.exe路径
        try:
            option = webdriver.ChromeOptions()
            option.add_argument('lang=zh_CN.UTF-8')  # 设置
            # 解决报错，设置无界面运行
            option.add_argument('--no-sandbox')
            option.add_argument('--disable-dev-shm-usage')
            option.add_argument('window-size=1920x3000')  # 指定浏览器分辨率
            option.add_argument('--disable-gpu')  # 谷歌文档提到需要加上这个属性来规避bug
            option.add_argument('blink-settings=imagesEnabled=false')  # 不加载图片, 提升速度
            option.add_argument('--headless')  # 浏览器不提供可视化页面. linux下如果系统不支持可视化不加这条会启动失败
            # 下面语句是为了解决后面的无关显示：DevTools listening on ws://127.0.0.1:53
            option.add_experimental_option('excludeSwitches', ['enable-logging'])
            option.set_capability("pageLoadStrategy","none")
            if getattr(sys, 'frozen', False):
                # 从exe包里找chromedriver依赖驱动的情况
                chromedriver_path = os.path.join(sys._MEIPASS, "chromedriver.exe")
            else:
                # 本地（未打包成exe时调用依赖）
                chromedriver_path = "chromedriver.exe"
            browser = webdriver.Chrome(service=Service(chromedriver_path), options=option)
            # 5/0 #测试报错显示
        except Exception as e:
            print("程序运行报错了，可能原因是电脑不存在edge浏览器或chrome谷歌浏览器，请安装后重试")
            print('错误: ',e)
            return False
    # browser = webdriver.Chrome(executable_path=chromedriver_path, options=option, desired_capabilities={"page_load_strategy": "none"})
    # browser.get(url)
    return browser



# 该模块既可以导入到别的模块中使用，另外该模块也可自我执行
if __name__ == '__main__':
    try:
        url = ""
        flages = open_url_selenium(url)
        if flages == False:
            print("抱歉程序运行出错了，稍等重试")
    except Exception as e:
        print("抱歉，程序运行遇到了错误，请稍后重试\n",e)
    #解析完成
    os.system("pause")
